#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cliArg.h>

namespace cli 
{
    bool Args::has(const char* name) const
    {
        if (!name) return false;
        return params_.find(name) != params_.end();
    }

    const char* Args::get(const char* name) const
    {
        if (!name) return nullptr;

        auto it = params_.find(name);
        if (it != params_.end()) 
        {
            return it->second.c_str();
        }
        return nullptr;
    }

    void Args::set(const char* name, const char* value)
    {
        if (name && (*name != EOFS))
        {
            params_[name] = value ? value : NULLSTR;
        }
    }

    void Args::set_default(const char* name, const char* default_val)
    {
        if (!has(name) && name && (*name != EOFS) && default_val)
        {
            params_[name] = default_val;
        }
    }
}
